import logging
import colorlog

# 设置日志记录器
def setup_logger(logger_name):
    # 创建日志记录器
    logger = logging.getLogger(logger_name)
    logger.setLevel(logging.DEBUG)  # 设置日志级别

    # 创建控制台处理器并设置级别为DEBUG
    ch = colorlog.StreamHandler()
    ch.setLevel(logging.DEBUG)

    # 创建格式化器
    formatter = logging.Formatter(
        '%(asctime)s - %(name)s - %(levelname)s - %(filename)s - %(funcName)s - %(lineno)d - %(message)s'
    )
    
    # 彩色格式化器
    color_formatter = colorlog.ColoredFormatter(
        '%(log_color)s%(asctime)s - %(name)s - %(levelname)s - %(message)s',
        log_colors={
            'DEBUG': 'cyan',
            'INFO': 'green',
            'WARNING': 'yellow',
            'ERROR': 'red',
            'CRITICAL': 'bold_red',
        }
    )

    # 将格式化器添加到控制台处理器
    ch.setFormatter(color_formatter)

    # 创建文件处理器并设置级别为ERROR，使用UTF-8编码
    fh_error = logging.FileHandler('error.log', encoding='utf-8')
    fh_error.setLevel(logging.ERROR)
    fh_error.setFormatter(formatter)

    # 创建文件处理器并设置级别为WARNING，使用UTF-8编码
    fh_warning = logging.FileHandler('warning.log', encoding='utf-8')
    fh_warning.setLevel(logging.WARNING)
    fh_warning.setFormatter(formatter)

    # 创建文件处理器并设置级别为INFO，使用UTF-8编码
    fh_info = logging.FileHandler('info.log', encoding='utf-8')
    fh_info.setLevel(logging.INFO)
    fh_info.setFormatter(formatter)

    # 将处理器添加到日志记录器
    logger.addHandler(ch)
    logger.addHandler(fh_error)
    logger.addHandler(fh_warning)
    logger.addHandler(fh_info)

    return logger